package Lee_code;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

/**
 * @author blh
 * @date 2024年06月28日 18:16
 */
public class Lee_78_628 {
    HashSet<List<Integer>> set = new HashSet<>();
    int endIndex;
    public List<List<Integer>> subsets(int[] nums) {
        endIndex = nums.length;
        // 加入空集
        set.add(new ArrayList<>());
        backTrace(new ArrayList<Integer>(), 0, nums);
        return new ArrayList<>(set);
    }

    private void backTrace(ArrayList<Integer> list, int startIndex, int[] nums) {
        set.add(new ArrayList<>(list));
        if (startIndex== nums.length){
            return;
        }
        for (int i=startIndex; i<endIndex; i++){
            list.add(nums[i]);
            backTrace(list, i+1, nums);
            list.remove(list.size()-1);
        }
    }
}
